#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
主题: 代理迭代
问题: 你构建了一个自定义容器对象，里面包含有列表、元组或其他可迭代对象。 你想直接在你的这个新容器对象上执行迭代操作。
提示 : 
"""

def recipe1():
    root = Node(0)
    child1 = Node(1)
    child2 = Node(2)
    root.add_child(child1)
    root.add_child(child2)
    for ch in root:
        print(f"{ch = }")

class Node:
    """定义一个 __iter__() 方法"""
    def __init__(self, value) -> None:
        self._value = value
        self._children = []

    def __repr__(self) -> str:
        return 'Node({!r})'.format(self._value)

    def add_child(self, node):
        self._children.append(node)

    def __iter__(self):
        return iter(self._children)

def main():
    print('recipe1'.center(20, '*'))
    recipe1() 

if __name__ == '__main__':
    main()          